#pragma once

#include "Node.h"
#include "LeafNode.h"
#include <iostream>
#include <map>
#include <iostream>
#include <queue>
#include <string>
#include <vector>

using namespace std;

class Tree
{
public:
	Tree(void);
	~Tree(void);

	/*int getOrder(){ return orderCnt--;}*/
	void add(int elem);
	Node* addNode(int val);
	Node* getNodeByVal(int val);
	void incrementNodes(Node* node);
	/*LeafNode* find(int elem);*/
	/*void swap(Node* node1, Node* node2);*/

	//void order();
	////void checkUp(Node *node); // checkUp in tree if order is 

private:
	Node* root;
	/*map<int,LeafNode*> leafsMap;*/	
	priority_queue <Node> que;
	map<int,LeafNode*> valuesMap;
	/*int orderCnt;	*/
};

